import java.util.*;

/*
 *@Student 张策
 */
/*
 *@Student 张策
 */
class  TreeNode{
    char val;
    TreeNode left;
    TreeNode right;
    public TreeNode(char val) {
        this.val = val;
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while (in.hasNextLine()){
            String str=in.nextLine();
            TreeNode treeNode = creatNode(str);
            printTree(treeNode);
        }
    }
    public static int i=0;
    private static TreeNode creatNode(String str){
        TreeNode root=null;
        char ch=str.charAt(i);
        i++;
        if (ch!='#') {
             root = new TreeNode(ch);
             root.left=creatNode(str);
             root.right=creatNode(str);
        }
        return root;

    }
    private static void printTree(TreeNode node){
        if(node==null){
            return ;
        }
        printTree(node.left);
        System.out.print(node.val+" ");
        printTree(node.right);
    }
    public void levelOrder1(TreeNode root) {
        if(root==null){
            return ;
        }
            Queue<TreeNode> integers = new LinkedList<>();
            integers.offer(root);
            while (!integers.isEmpty()){
                TreeNode poll = integers.poll();
                System.out.println(poll.val+" ");
                if(root.left!=null){
                    integers.offer(root.left);
                }
                if (root.right!=null){
                    integers.offer(root.right);
                }
            }
    }
    public boolean wanquan(TreeNode root){
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()){
            TreeNode poll = queue.poll();
            if(poll==null){
                break;
            }else {
                queue.offer(poll.left);
                queue.offer(poll.right);
            }
        }
        while (!queue.isEmpty()){
            TreeNode poll = queue.poll();
            if(poll!=null){
                return false;
            }
        }

        return true;
    }
//        public List<List<Integer>> levelOrder(TreeNode root) {
//            List<List<Integer>> it = new ArrayList<>();
//        if (root==null){
//            return it;
//        }
//        Queue<TreeNode> it2 = new LinkedList<>();
//
//            it2.offer(root);
//        while (!it2.isEmpty()){
//            List<Integer> it1 = new ArrayList<>();
//            int size=it2.size();
//            while (size!=0){
//                TreeNode poll = it2.poll();
//                it1.add(poll.val);
//                size--;
//                if(poll.left!=null){
//                    it2.offer(poll.left);
//                }
//                if (poll.right!=null){
//                    it2.offer(poll.right);
//                }
//            }
//            it.add(it1);
//        }
//        return it;
//    }
}
